package Test.stream流测试;

import Test.Test02.Student;

import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;

/**
 * @Author kirito
 * @Date 2023/12/13 15:23
 * @PackageName:Test.stream流测试
 * @ClassName: test02
 * @Description:
 * @Version 1.0
 */
public class test02 {
    public static void main(String[] args) {
        Student a = new Student("a", 1);
        Student b = new Student("b", 2);
        Student c = new Student("c", 3);
        Student d = new Student("d", 4);
        Student e = new Student("e", 5);
        Student f = new Student("f", null);
        Student g = new Student("g", null);
        Student A = new Student("a", 10);
        List<Student> list1 = new ArrayList<>();
        List<Student> list2 = new ArrayList<>();
        list1.add(f);
        list1.add(a);
        list1.add(c);
        list1.add(b);
        list1.add(e);

        list2.add(a);
        list2.add(d);
        list2.add(e);
        list2.add(A);
        System.out.println(list1);
//        Comparator.nullsLast(Comparator.naturalOrder())).reversed()
//        是一个用于排序的Comparator组合操作。它的作用是对给定的对象进行排序，并按照以下规则进行排序：
//
//        首先，Comparator.naturalOrder()会根据对象的自然顺序对它们进行排序。如果对象是可比较的，它们的自然顺序将被使用。
//        然后，Comparator.nullsLast(...)将空对象（null）放在排序的末尾，即将空对象视为最大值进行排序。
//        最后，.reversed()将排序结果反转，即按照降序进行排序。
//        List<IdentityDTO> identityDTOList = identityDtoS.stream() //  根据身份的创建时间进行排序
//                .sorted(Comparator.comparing(IdentityDTO::getCreatedDate, Comparator.nullsLast(Comparator.naturalOrder())).reversed())
//                .collect(Collectors.toList());
        List<Student> collect = list1.stream()
                //Comparator.comparing和sorted配合使用
                .sorted(Comparator.comparing(Student::getAge, Comparator.nullsLast(Comparator.naturalOrder()))
//                        .reversed()
                )
                .collect(Collectors.toList());
        System.out.println(collect);

    }
}
